import http from 'wechat-http'
http.baseURL = 'https://live-api.itheima.net'

// 响应拦截器
http.intercept.response = async ({ statusCode, data, config }) => {
  // console.log(statusCode, data, config)
  console.dir(config)
  const app = getApp()
  if (data.code === 401) {
    if (config.url.includes('/refreshToken')) {
      console.log('两个token都过期了')
      // 清空token
      app.setToken('token', '')
      app.setToken('refreshToken', '')
      // 回去登录页 - 携带当前的页面地址
      const pages = getCurrentPages()
      const curPage = pages[pages.length - 1]
      console.log('当前页面', curPage.route)
      wx.redirectTo({
        url: '/pages/login/index?redirectURL=/' + curPage.route,
      })
      return Promise.reject('登录信息过期了，重新登录')
    }
    // 用refreahToken发请求
    const res = await http({
      url: '/refreshToken',
      method: 'post',
      header: {
        Authorization: 'Bearer ' + app.getToken('refreshToken')
      }
    })
    console.log('refreshToken', res)

    // 保存token
    app.setToken('token', res.token)
    app.setToken('refreshToken', res.refreshToken)

    // 重发请求 - 注意使用新token
    // config = Object.assign({}, config, {
    //   header: {
    //     Authorization: 'Bearer ' + res.token
    //   }
    // })
    config.header.Authorization = 'Bearer ' + res.token
    // console.log(config)
    return http(config)
  }
  // console.log(statusCode) // http 响应状态码
  // console.log(config) // 发起请求时的参数
  // // 拦截器处理后的响应结果
  else if (data.code === 10000) {
    return data.data
  } else {
    wx.$toast(data.message || '请求失败')
    return Promise.reject(data.message)
  }
}

// 请求拦截器
http.intercept.request = (options) => {
  // 指定默认的头信息
  const defaultHeader = {}
  // 权限认证
  const token = getApp().getToken()
  if (token) {
    defaultHeader.Authorization = 'Bearer ' + token
  }
  // 合并头信息
  options.header = Object.assign({}, defaultHeader, options.header)
  // 拦截器处理后的请求参数
  return options
}

wx.$http = http